Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add nesting limit for JsonReader #2588

Merged
merged 12 commits into from
Jul 19, 2024

Conversation

Marcono1234
Copy link
Collaborator

Purpose

Add nesting limit for JsonReader

Description

For now don't expose this as additional GsonBuilder method assuming that the default nesting limit is high enough for most users. Otherwise users can first obtain a JsonReader from Gson.newJsonReader and then set a custom nesting limit.

The reasons why this pull request makes the nesting limit configurable at all are

Checklist

  • New code follows the Google Java Style Guide
    This is automatically checked by mvn verify, but can also be checked on its own using mvn spotless:check.
    Style violations can be fixed using mvn spotless:apply; this can be done in a separate commit to verify that it did not cause undesired changes.
  • If necessary, new public API validates arguments, for example rejects null
  • New public API has Javadoc
    • Javadoc uses @since $next-version$
      ($next-version$ is a special placeholder which is automatically replaced during release)
  • If necessary, new unit tests have been added
    • Assertions in unit tests use Truth, see existing tests
    • No JUnit 3 features are used (such as extending class TestCase)
    • If this pull request fixes a bug, a new test was added for a situation which failed previously and is now fixed
  • mvn clean verify javadoc:jar passes without errors

For now don't expose this as additional GsonBuilder method assuming that
the default nesting limit is high enough for most users. Otherwise users
can first obtain a JsonReader from `Gson.newJsonReader` and then set a
custom nesting limit.
See comment in JsonTreeReaderTest for the rationale
# Conflicts:
#	gson/src/main/java/com/google/gson/stream/JsonReader.java
#	gson/src/test/java/com/google/gson/internal/bind/JsonTreeReaderTest.java
@Marcono1234
Copy link
Collaborator Author

Marcono1234 commented Jun 23, 2024

@eamonnmcmanus regarding #2632 (reply in thread): Is there some general problem with this concept of a nesting limit or should I change something?

@eamonnmcmanus
Copy link
Member

@eamonnmcmanus regarding #2632 (reply in thread): Is there some general problem with this concept of a nesting limit or should I change something?

Last time I looked, this triggered a test failure in a Google-internal test. I think what I might do is patch Google's internal copy of the Gson source code to increase the threshold so that test passes. I think the limit of 255 is reasonable for the public version. I'm looking into this now.

@eamonnmcmanus eamonnmcmanus merged commit 1039427 into google:main Jul 19, 2024
11 checks passed
@Marcono1234 Marcono1234 deleted the marcono1234/nesting-limit branch July 19, 2024 21:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants